Parameter Updates

Since SOLIS is backed by actual flight software, the scope of functionality goes well beyond what can be easily configured by the plugin. You can change parameters from within the sequence editor, which means that everything that you can configure before running a simulation is also configurable from within a sequence during runtime.

Why update parameters?

There are countless reasons why changing spacecraft flight software parameters is useful. Since the flight software includes ODySSy, not only can you update flight software parameters, but you can also edit the on-board simulation. This opens up a myriad of possibilities, including but not limited to the following examples.

Flight software example
  • If the satellite undergoes a physical change (e.g., a gravity gradient boom payload deploying), you can update the Mass Properties and the controller in order to maintain a stable spacecraft.
ODySSy simulation examples

Since ODySSy affords the ability to simulate many different aspects of actuators and sensors, you can use this functionality to inject faults into the spacecraft.

  • Setting the momentum limit of a reaction wheel to a very small value simulates a reaction wheel failure, as any momentum command it is given will result in a reaction wheel that does not spin.
  • To simulate a solar flare hitting the spacecraft, you can temporarily increase the noise parameter in the simulation of the sensors to see how the spacecraft handles such an event.

How do you update parameters?

To update parameters, use the MISC_CONFIG_PARSE command in the Sequence Editor. The only editable portion of the command is the Value field (highlighted in blue). The syntax of the command that goes into the Value field is:

[object instance].[attribute] = [attribute value];

[object instance]

The Object Instance is the physical object being simulated, such as the sensor, actuator, payload, comm system, or other on-board software object.

[attribute]

Attributes are characteristics or properties that you can set for a particular object. For example, a torque limit is one attribute that can be set for a reaction wheel.

[attribute value]

There are six different kinds of values that can be passed:

Type Description Example
String A string value CustomModeName
Integer An integer that cannot include a decimal point 42
Floating Point A floating point value that must include a single decimal point and may include scientific notation 5.0 or 1.25e-3
Vector A collection of three floating point values, separated by spaces and surrounded by a square bracket; often vectors are unit vectors and should be passed in as such [1.0e-1 5.0e-2 1.0e+0]
Quaternion A collection of four floating point values, separated by spaces and surrounded by a square bracket; quaternions should be normalized and properized before they are passed in [0.0e+0 0.0e+0 0.0e+0 1.0e+0]
Matrix A matrix of 3x3 floating point values, separated by spaces and surrounded by square brackets [[1.0 0.0 0.0][0.0e+0 1.0e+0 0.0e+0][0.0 0.0 1.0]]

Example

The following command updates the required separation angle for determining attitude initialization:

FSW_AttDetermination.D_InitReqSepAngle_rd = 5.23598775598299e-1;